From: Daniel van Vugt Date: Fri, 12 Oct 2018 04:00:31 +0000 (+0800) Subject: iconGrid: Keep icons reactive during pulse animation X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~897^2~1^2~62 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1acdff822ae15551f9721889ce5bce2cdce0b091;p=gnome-shell.git iconGrid: Keep icons reactive during pulse animation The `reactive` property of icon actors was being restored multiple times over the course of the pulse animation, all at slightly different times as each icon finished animating at different times. The problem is that toggling `reactive` on an `StWidget` incurs a style change of the `insensitive` pseudo class, and style changes would quickly queue relayouts incurring full stage reallocation. This occurred many times during a pulse animation, limiting its smoothness and performance. The solution is to not toggle the `reactive` property in the pulse animation at all, which avoids incurring multiple full stage relayouts. As a bonus, this means the icon under the cursor pulses with the correct selection highlight, appearing more seamless and responsive. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/261 --- diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js index 5aff02784..94387a333 100644 --- a/js/ui/iconGrid.js +++ b/js/ui/iconGrid.js @@ -469,7 +469,6 @@ var IconGrid = new Lang.Class({ for (let index = 0; index < actors.length; index++) { let actor = actors[index]; - actor.reactive = false; actor.set_scale(0, 0); actor.set_pivot_point(0.5, 0.5); @@ -491,7 +490,6 @@ var IconGrid = new Lang.Class({ onComplete: () => { if (isLastItem) this._animationDone(); - actor.reactive = true; } }); }